//Node.js 常用工具
//util 是一个Node.js 核心模块，提供常用函数的集合，用于弥补核心JavaScript的功能

// util.inherits
//util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。
const util = require('util');
function Base() {
    this.name = 'base';
    this.base = 1991;
    this.sayHello = function() {
        console.log('Hello ' + this.name);
    };
}
Base.prototype.showName = function() {
    console.log(this.name);
};
function Sub() {
    this.name = 'sub';
}

util.inherits(Sub, Base);
let objBase = new Base();
objBase.sayHello();
objBase.showName();
console.log('objbase ====================')
console.log(objBase);
let objSub = new Sub();
objSub.showName();
console.log('Sub ===================');
console.log(objSub);
// 注意注意：Sub 仅仅继承了Base在原型中定义的函数，而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 Sub 继承。

// objSub.sayHello();  // err

// util.inspect
/* util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换为字符串的方法，
通常用于调试和错误输出。它至少接受一个参数 object，即要转换的对象。
 */

function Person() {
    this.name = 'beyond';
    this.toString = function () {
        return this.name
    }
}
let obj = new Person();
console.log(util.inspect(obj));
console.log(util.inspect(obj, true , 2, true));

